class Solution {
public:
    string reverseStr(string s, int k) {
        int n = s.size() / (2 * k);
        int pre = 0;

        while (n--)
        {
            reverse(s.begin() + pre * 2 * k, s.begin() + pre * 2 * k + k);
            pre++;
        }

        int des = s.size() % (2 * k);
        if (des == 0)
        {
            return s;
        }
        if (0 < des && des < k)
        {
            reverse(s.rbegin(), s.rbegin() + des);
        }
        if (k <= des && des < (2 * k))
        {
            int des1 = des % k;
            reverse(s.rbegin() + des1, s.rbegin() + des1 + k);
        }
        return s;
    }
};